#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    cv::VideoCapture cap("run.mp4");

    cv::Mat frame, hsv, mask, result;
    while (true) {
        cap >> frame;
        if (frame.empty()) break;


        cv::cvtColor(frame, hsv, cv::COLOR_BGR2HSV);

        cv::Scalar lower_orange( 5, 100, 100);
        cv::Scalar upper_orange(20, 255, 255);

        cv::inRange(hsv, lower_orange, upper_orange, mask);


        cv::GaussianBlur(mask, mask, cv::Size(5, 5), 0);
        cv::threshold(mask, mask, 127, 255, cv::THRESH_BINARY);


        std::vector<std::vector<cv::Point>> contours;
        cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);


        for (const auto& cnt : contours) {
            double area = cv::contourArea(cnt);
            if (area > 500) {

                std::vector<cv::Point> approx;
                cv::approxPolyDP(cnt, approx, cv::arcLength(cnt, true) * 0.02, true);


                cv::Rect bbox = cv::boundingRect(approx);


                cv::rectangle(frame, bbox, cv::Scalar(0, 0, 255), 2);
            }
        }


        cv::imshow("Orange Shoes Tracking", frame);
        if (cv::waitKey(30) == 27) break;
    }

    cap.release();
    cv::destroyAllWindows();
    return 0;
}
